

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.*;
public class ModifySituation extends JPanel implements ActionListener
{
    Hashtable 基本信息表=null;
    JTextField 学号,姓名,专业,年级,出生;
    JRadioButton 男,女;
    ButtonGroup group=null;
    JButton 开始修改,录入修改,重置;
    FileInputStream inOne=null;
    ObjectInputStream inTwo=null;
    FileOutputStream outOne=null;
    ObjectOutputStream outTwo=null;
    File file=null;
    public ModifySituation(File file)
    {
        this.file=file;
        学号=new JTextField(10);
        姓名=new JTextField(10);
        专业=new JTextField(10);
        年级=new JTextField(10);
        出生=new JTextField(10);
        group=new ButtonGroup();
        男=new JRadioButton("男",true);
        女=new JRadioButton("女",false);
        group.add(男);
        group.add(女);
        开始修改=new JButton("开始修改");
        录入修改=new JButton("录入修改");
        录入修改.setEnabled(false);
        重置=new JButton("重置");
        学号.addActionListener(this);
        开始修改.addActionListener(this);
        录入修改.addActionListener(this);
        重置.addActionListener(this);
        Box box1=Box.createHorizontalBox();
        box1.add(new JLabel("输入要修改信息的学号:",JLabel.CENTER));
        box1.add(学号);
        box1.add(开始修改);
        Box box2=Box.createHorizontalBox();
        box2.add(new JLabel("(新)姓名:",JLabel.CENTER));
        box2.add(姓名);
        Box box3=Box.createHorizontalBox();
        box3.add(new JLabel("(新)性别:",JLabel.CENTER));
        box3.add(男);
        box3.add(女);
        Box box4=Box.createHorizontalBox();
        box4.add(new JLabel("(新)专业:",JLabel.CENTER));
        box4.add(专业);
        Box box5=Box.createHorizontalBox();
        box5.add(new JLabel("(新)年级:",JLabel.CENTER));
        box5.add(年级);
        Box box6=Box.createHorizontalBox();
        box6.add(new JLabel("(新)出生:",JLabel.CENTER));
        box6.add(出生);
        Box boxH=Box.createVerticalBox();
        boxH.add(box1);
        boxH.add(box2);
        boxH.add(box3);
        boxH.add(box4);
        boxH.add(box5);
        boxH.add(box6);
        boxH.add(Box.createVerticalGlue());
        JPanel pCenter=new JPanel();
        pCenter.add(boxH);
        setLayout(new BorderLayout());
        add(pCenter,BorderLayout.CENTER);
        JPanel pSouth=new JPanel();
        pSouth.add(录入修改);
        pSouth.add(重置);
        add(pSouth,BorderLayout.SOUTH);
        validate();
    }
    public void actionPerformed(ActionEvent e)
    {
        if(e.getSource()==开始修改||e.getSource()==学号)
        {
            String number="";
            number=学号.getText();

            if(number.length()>0)
            {
                try {
                    inOne=new FileInputStream(file);
                    inTwo=new ObjectInputStream(inOne);
                    基本信息表=(Hashtable)inTwo.readObject();
                    inOne.close();
                    inTwo.close();
                }
                catch(Exception ee)
                {
                }
                if(基本信息表.containsKey(number))
                {
                    录入修改.setEnabled(true);
                    Student stu=(Student)基本信息表.get(number);
                    姓名.setText(stu.getName());
                    专业.setText(stu.getDisciping());
                    年级.setText(stu.getGrade());
                    出生.setText(stu.getBorth());
                    if(stu.getSex().equals("男"))
                    {
                        男.setSelected(true);
                    }
                    else
                    {
                        女.setSelected(true);
                    }
                }
                else
                {
                    录入修改.setEnabled(false);

                    String warning="该学号不存在!";
                    JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);
                    学号.setText(null);
                    姓名.setText(null);
                    专业.setText(null);
                    年级.setText(null);
                    出生.setText(null);

                }
            }
            else
            {
                录入修改.setEnabled(false);

                String warning="必须要输入学号!";
                JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);
                学号.setText(null);
                姓名.setText(null);
                专业.setText(null);
                年级.setText(null);
                出生.setText(null);
            }
        }
        else if(e.getSource()==录入修改)
        {
            String number="";
            number=学号.getText();
            if(number.length()>0)
            {
                try {
                    inOne=new FileInputStream(file);
                    inTwo=new ObjectInputStream(inOne);
                    基本信息表=(Hashtable)inTwo.readObject();
                    inOne.close();
                    inTwo.close();
                }
                catch(Exception ee)
                {
                }
                if(基本信息表.containsKey(number))
                {
                    String question="该生基本信息已存在,您想修改他(她)的基本信息吗?";

                    JOptionPane.showMessageDialog(this,question,"警告",JOptionPane.QUESTION_MESSAGE);

                    String m="基本信息将被修改!";
                    int ok=JOptionPane.showConfirmDialog(this,m,"确认",JOptionPane.YES_NO_OPTION,
                            JOptionPane.INFORMATION_MESSAGE);
                    if(ok==JOptionPane.YES_OPTION)
                    {
                        String name=姓名.getText();
                        String discipling=专业.getText();
                        String grade=年级.getText();
                        String borth=出生.getText();
                        String sex=null;
                        if(男.isSelected())
                        {
                            sex=男.getText();
                        }
                        else
                        {
                            sex=女.getText();
                        }
                        Student  学生=new Student();
                        学生.setNumber(number);
                        学生.setName(name);
                        学生.setDiscipling(discipling);
                        学生.setGrade(grade);
                        学生.setBorth(borth);
                        学生.setSex(sex);
                        try
                        {
                            outOne=new FileOutputStream(file);
                            outTwo=new ObjectOutputStream(outOne);
                            基本信息表.put(number,学生);
                            outTwo.writeObject(基本信息表);
                            outTwo.close();
                            outOne.close();
                            学号.setText(null);
                            姓名.setText(null);
                            专业.setText(null);
                            年级.setText(null);
                            出生.setText(null);
                        }
                        catch(Exception ee)
                        {
                            System.out.println(ee);
                        }
                        录入修改.setEnabled(false);
                    }
                    else if(ok==JOptionPane.NO_OPTION)
                    {
                        录入修改.setEnabled(true);
                    }
                }
                else
                {

                    String warning="该学号没有基本信息,不能修改!";
                    JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);
                    录入修改.setEnabled(false);
                }
            }
            else
            {
                String warning="必须要输入学号!";
                JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);
                录入修改.setEnabled(false);
            }
        }
        if(e.getSource()==重置)
        {
            学号.setText(null);
            姓名.setText(null);
            专业.setText(null);
            年级.setText(null);
            出生.setText(null);
        }
    }
}
